cmake_minimum_required(VERSION 3.9)
project(general_framework)
 
 
#设定编译参数
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE "Debug")

add_compile_options(-g -ggdb -O0)
 
#设定源码列表.cpp
# set(SOURCE_FILES test_class.cpp test_class_wrapper.cpp)
set(SOURCE_FILES 
    main.cpp 
    mysql_management/mysql_management.cpp mysql_management/mysql_client.cpp
    redis_management/redis_client.cpp)
#设定所有源码列表 ：aux_source_directory(<dir> <variable>)
#比如:aux_source_directory(${CMAKE_SOURCE_DIR} DIR)  将${CMAKE_SOURCE_DIR}目录下，也就是最顶级目录下所有的.cpp文件放入DIR变量中，后面的add_executable就可以很简化
#    add_executable(hello_world ${DIR})
 
 
#设定头文件路径
include_directories(/usr/local/include/hiredis)
include_directories(mysql_management redis_management)
#include_directories("路径1"  “路径2”...)
 
 
#设定链接库的路径（一般使用第三方非系统目录下的库）
link_directories(/usr/lib64/mysql/ /usr/local/root/workspace/openssl:)
#link_directories("路径1"  “路径2”...)
 
 
#添加子目录,作用相当于进入子目录里面，展开子目录的CMakeLists.txt
#同时执行，子目录中的CMakeLists.txt一般是编译成一个库，作为一个模块
#在父目录中可以直接引用子目录生成的库
#add_subdirectory(math)
 
 
#生成动/静态库
# add_library(test_class SHARED ${SOURCE_FILES})
#可以单独生成多个模块
 
 
#生成可执行文件
add_executable(general_framework ${SOURCE_FILES} )
#比如：add_executable(hello_world    ${SOURCE_FILES})
 
 
target_link_libraries(general_framework pthread mysqlclient hiredis)#就是g++ 编译选项中-l后的内容，不要有多余空格
 
#ADD_CUSTOM_COMMAND( #执行shell命令
#           TARGET myLevelDB 
#           POST_BUILD #在目标文件myLevelDBbuild之后，执行下面的拷贝命令，还可以选择PRE_BUILD命令将会在其他依赖项执行前执行  PRE_LINK命令将会在其他依赖项执行完后执行  POST_BUILD命令将会在目标构建完后执行。
#           COMMAND cp ./myLevelDB  ../
# )